using System;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Numerics;
using Nethereum.Hex.HexTypes;
using Nethereum.ABI.FunctionEncoding.Attributes;
using Nethereum.RPC.Eth.DTOs;
using Nethereum.Contracts.CQS;
using Nethereum.Contracts;

namespace Nethereum.Mud.Contracts.World.Systems.RegistrationSystem.ContractDefinition
{


    public partial class RegistrationSystemDeployment : RegistrationSystemDeploymentBase
    {
        public RegistrationSystemDeployment() : base(BYTECODE) { }
        public RegistrationSystemDeployment(string byteCode) : base(byteCode) { }
    }

    public class RegistrationSystemDeploymentBase : ContractDeploymentMessage
    {
        public static string BYTECODE = "0x60a06040523060805234801561001457600080fd5b506080516157d7620000316000396000610bdb01526157d76000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80636548a90a116100b2578063b29e408911610081578063cdc938c511610066578063cdc938c514610295578063d5f8337f146102a8578063e1af802c146102bb57600080fd5b8063b29e40891461026f578063bfdfaff71461028257600080fd5b80636548a90a146102235780638da798da14610236578063a92813ad14610249578063aa66e9c81461025c57600080fd5b80631d2257ba116101095780633350b6a9116100ee5780633350b6a9146101ea57806345ec9354146101fd578063530f4b601461021057600080fd5b80631d2257ba146101ab57806326d98102146101be57600080fd5b806301ffc9a71461013b57806305609129146101635780630ba51f4914610178578063119df25f1461018b575b600080fd5b61014e610149366004614c24565b6102c3565b60405190151581526020015b60405180910390f35b610176610171366004614c63565b61032c565b005b610176610186366004614cdf565b610353565b61019361041e565b6040516001600160a01b03909116815260200161015a565b6101766101b9366004614e2c565b61042d565b6101d16101cc366004614e85565b61044d565b6040516001600160e01b0319909116815260200161015a565b6101766101f8366004614ecc565b6105a3565b604051601f19360135815260200161015a565b61017661021e366004614f24565b61071e565b6101d1610231366004614f62565b61078a565b610176610244366004614fc5565b610865565b610176610257366004614c63565b610927565b61017661026a366004614fff565b610966565b61017661027d366004614fff565b610998565b610176610290366004615018565b610a2d565b6101766102a3366004615052565b610aed565b6101766102b6366004614f24565b610b06565b610193610bc7565b60006001600160e01b031982167fb5dee12700000000000000000000000000000000000000000000000000000000148061032657506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610334610bd1565b6103458261034061041e565b610c35565b61034f8282610cae565b5050565b61035b610bd1565b600061036689610cd9565b6fffffffffffffffffffffffffffffffff1916036103c5578761038889610cf0565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103bc9291906150bf565b60405180910390fd5b6103e8616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e04565b6103f48861034061041e565b61041488888888610405888a6150d8565b61040f87896150d8565b610e4f565b5050505050505050565b600061042861125f565b905090565b610435610bd1565b61044861044061041e565b848484611291565b505050565b6000610457610bd1565b61737960f01b836001600160f01b031916146104b25761737960f01b8361047d85610cf0565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103bc9392919061515e565b6104bb83610e04565b6104c78361034061041e565b60006104f06104d68560101b90565b71ffffffffffffffffffffffffffffffffffff19166112ee565b905060008184604051602001610507929190615187565b604051602081830303815290604052905080805190602001209250600061052d84611378565b90508015610573576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103bc565b84516020860120610585858883611428565b61058f81876114f3565b61059985846114f3565b5050505092915050565b6105ab610bd1565b61737960f01b836001600160f01b031916146105d15761737960f01b8361047d85610cf0565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b176105f581610e04565b6106018161034061041e565b61062b837fb5dee127000000000000000000000000000000000000000000000000000000006115bc565b600061063685610cd9565b6fffffffffffffffffffffffffffffffff191603610658578361038885610cf0565b600061066384611617565b905080158015906106745750848114155b156106b6576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103bc565b60006106c18661169c565b90506001600160a01b038116156106ea576106db81611738565b6106e583826117b7565b6106f5565b6106f5866001611855565b6107008686866118f6565b61070a8587611999565b61071683866001611a41565b505050505050565b610726610bd1565b610750827f1873396a000000000000000000000000000000000000000000000000000000006115bc565b610773616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e04565b61077f8361034061041e565b610448838383611af0565b6000610794610bd1565b60408051616e7360f01b602082015260006022820181905260308201526107d691016040516020818303038152906040526107ce906151df565b61034061041e565b8280519060200120905060008280519060200120905060006107f783611378565b9050801561083d576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319841660048201526024016103bc565b610848838784611428565b61085282856114f3565b61085c83866114f3565b50509392505050565b61086d610bd1565b610897827f6fdd1c80000000000000000000000000000000000000000000000000000000006115bc565b6109136108a261041e565b600084846040516024016108b69190615203565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611bb3565b5061034f8282805190602001206001611be0565b61092f610bd1565b61093b8261034061041e565b61034f7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611c8f565b61096e610bd1565b61097781611da2565b61098081610e04565b61098c8161034061041e565b61099581611dd3565b50565b6109a0610bd1565b6109a981611da2565b6109b281611e3e565b6109bb81612030565b156109fe57806109ca82610cf0565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103bc9291906150bf565b610a09816001611855565b610a1a81610a1561041e565b6120b5565b61099581610a2661041e565b6001611a41565b610a35610bd1565b610a3e83611da2565b610a478261217f565b610a7d576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a898361034061041e565b6000610a948361169c565b9050610ac0817f1a86b550000000000000000000000000000000000000000000000000000000006115bc565b610aca848461219b565b815115610ae757610ae5610adc61041e565b8484600061221a565b505b50505050565b610af5610bd1565b610995610b0061041e565b8261222b565b610b0e610bd1565b61737960f01b836001600160f01b03191614610b345761737960f01b8361047d85610cf0565b610b5e827f540fbfa8000000000000000000000000000000000000000000000000000000006115bc565b610b6783610e04565b610b8a616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e04565b610b968361034061041e565b610448836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176122cd565b6000610428612372565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c33576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610c62616e7360f01b6dffffffffffffffffffffffffffff60801b85161761237c565b6001600160a01b03161461034f57610c7982610cf0565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103bc929190615216565b61034f7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611c8f565b6000610ce760706010615257565b9190911b919050565b606081601081901b6000610d0383610cd9565b90508271ffffffffffffffffffffffffffffffffffff19831615610d4457610d3f71ffffffffffffffffffffffffffffffffffff1984166112ee565b610d7b565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610da257610d9d836112ee565b610dd9565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610deb9392919061526a565b6040516020818303038152906040529350505050919050565b610e0d81612030565b6109955780610e1b82610cf0565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103bc9291906150bf565b613a3160f11b866001600160f01b03191614801590610e7d5750611bdd60f21b866001600160f01b03191614155b15610ede57613a3160f11b8687604051602001610e9c91815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103bc93929160040161515e565b610ee78561240d565b610ef2846001612654565b610efd836000612654565b60e084901c60e885901c0160ff16825114610f5d5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff16815114610fbd5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110355760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b61103e856127f0565b611047846127f0565b1461109957611055856127f0565b61105e846127f0565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b6110a285612822565b6110ab84612822565b146110fd576110b985612822565b6110c284612822565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60005b611109866127f0565b8110156111a45761113361111d858361283f565b60c581111561112e5761112e6152e0565b612867565b6008601b8390030287901c60ff161461119c576008601b8290030286901c60ff1661116161111d868461283f565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b600101611100565b506111ae86612030565b156112085785866040516020016111c791815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103bc92916004016150bf565b611254868686868660405160200161122091906152f6565b6040516020818303038152906040528660405160200161124091906152f6565b6040516020818303038152906040526128c7565b610716866001611855565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061128e5750335b90565b61129c84848461298e565b6112a58261217f565b15610ae75760006112b58361169c565b90506112e1817f1a86b550000000000000000000000000000000000000000000000000000000006115bc565b610716858484600061221a565b606060005b6010811015611344576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615611344576001016112f3565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106113d0576113d0615378565b602090810291909101015260006113707f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612a44565b60006114348383612a7a565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061149257611492615378565b60209081029190910101526114ea7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612ab9565b50505050505050565b6060600061150083612dbf565b9050600061150d84612dcf565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061156657611566615378565b60209081029190910101526107167f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612ab9565b6115c68282612df8565b61034f576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103bc565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b8160008151811061165c5761165c615378565b602090810291909101015260006113707f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612a44565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106116d5576116d5615378565b6020908102919091010152600061172d7f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612a44565b60601c949350505050565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b8160008151811061177a5761177a615378565b602090810291909101015261034f7f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b612e14565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106117ec576117ec615378565b602002602001018181525050816001600160a01b031660001b8160018151811061181857611818615378565b60209081029190910101526104487f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b612e14565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061188b5761188b615378565b6020026020010181815250506104487f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016118d991151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b6130e0565b600061190283836130f5565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050868160008151811061194157611941615378565b60209081029190910101526114ea7f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612ab9565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b816000815181106119db576119db615378565b6020026020010181815250506104487f7462776f726c6400000000000000000053797374656d5265676973747279000060001b82600085604051602001611a2491815260200190565b60408051601f19818403018152919052630100080160dd1b6130e0565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611a7657611a76615378565b602002602001018181525050826001600160a01b031660001b81600181518110611aa257611aa2615378565b602002602001018181525050610ae77f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016118d991151560f81b815260010190565b613a3160f11b836001600160f01b03191614611b2057613a3160f11b8384604051602001610e9c91815260200190565b611b2983612030565b611b82578283604051602001611b4191815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103bc92916004016150bf565b610448836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617613125565b6060600080611bc4878787876131ca565b9150915081611bd657611bd681613242565b9695505050505050565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611c2157611c21615378565b6020026020010181815250508281600181518110611c4157611c41615378565b602002602001018181525050610ae77f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016118d991151560f81b815260010190565b6000611c9b848461324a565b90506000815167ffffffffffffffff811115611cb957611cb9614d75565b604051908082528060200260200182016040528015611ce2578160200160208202803683370190505b5090506000805b8351811015611d9357846001600160a01b0316611d2d858381518110611d1157611d11615378565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611d8b57838181518110611d4d57611d4d615378565b6020026020010151838381518110611d6757611d67615378565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611ce9565b508082526107168686846132b5565b616e7360f01b6dffffffffffffffffffffffffffff60801b821617811461099557616e7360f01b8161047d83610cf0565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611e0957611e09615378565b602090810291909101015261034f7f7462776f726c640000000000000000004e616d65737061636544656c656761748261330c565b6000611e4a8260101b90565b90506000611e6c71ffffffffffffffffffffffffffffffffffff1983166112ee565b80519091508015610ae757611e8e82611e8660018461538e565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003611f1f576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103bc565b60005b611f2d60018361538e565b811015610ae557602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000148015611fda5750611f9583611e86836001615257565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b15612028576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103bc565b600101611f22565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061206957612069615378565b602090810291909101015260006120a97f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612a44565b90506113708160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120eb576120eb615378565b6020026020010181815250506104487f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b8260008560405160200161214a919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006130e0565b600081151580156103265750612194826133a7565b1592915050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121d1576121d1615378565b6020026020010181815250506104487f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b82600085604051602001611a2491815260200190565b6060600080611bc487878787613407565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b8160008151811061226c5761226c615378565b602002602001018181525050816001600160a01b031660001b8160018151811061229857612298615378565b60209081029190910101526104487f7462776f726c640000000000000000005573657244656c65676174696f6e436f8261330c565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061230357612303615378565b6020026020010181815250506104487f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b8260008560405160200161235e91906affffffffffffffffffffff1991909116815260150190565b6040516020818303038152906040526135d7565b6000610428613688565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106123b5576123b5615378565b6020908102919091010152600061172d7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612a44565b80612444576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061244f82612822565b90506005811115612496576040517f6793df6200000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103bc565b60006124a1836127f0565b905060006124af8383615257565b9050601c8111156124f6576040517fecd893b900000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103bc565b6000805b838110156125a15760ff601b82900360080287901c16600081900361254e576040517f53b2dd05000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b602081111561258c576040517f7237f237000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b6125968184615257565b9250506001016124fa565b506125ab856136c7565b81146125f7576125ba856136c7565b6040517feba964de0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103bc565b825b601c8110156107165760ff601b82900360080287901c16801561264b576040517f1d8d44db000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b506001016125f9565b80158015612660575081155b156126815760405163d498615960e01b8152600060048201526024016103bc565b600061268c83612822565b905060058111156126b35760405163d498615960e01b8152600481018290526024016103bc565b60006126be846127f0565b905060006126cc8383615257565b9050601c8111156126f35760405163d498615960e01b8152600481018290526024016103bc565b6000805b8381101561275f57600061270e61111d898461283f565b90508060000361274a576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127548184615257565b9250506001016126f7565b50612769866136c7565b811461279457612778866136c7565b60405163d498615960e01b81526004016103bc91815260200190565b825b828110156114ea5760006127ad61111d898461283f565b905080156127e7576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101612796565b6000600860016128026002602061538e565b61280c919061538e565b61281691906153a1565b8260ff911c1692915050565b600060086001806128356002602061538e565b612802919061538e565b6000601b8290036008028360ff911c1660c5811115612860576128606152e0565b9392505050565b6000808260c581111561287c5761287c6152e0565b60ff169050606181101561289657601f1660010192915050565b60618360c58111156128aa576128aa6152e0565b036128b85750601492915050565b50600092915050565b50919050565b60006128d48686866136ea565b905060006128e28484613720565b905060006128f0858561373d565b6040805160018082528183019092529192506000919060208083019080368337019050509050898160008151811061292a5761292a615378565b60209081029190910101526129827f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612ab9565b50505050505050505050565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106129cf576129cf615378565b602002602001018181525050826001600160a01b031660001b816001815181106129fb576129fb615378565b602002602001018181525050610ae77f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b82600085604051602001611a2491815260200190565b6000612a71612a538686613752565b60ff858116601b0360080285901c16612a6c85876137a8565b6137e1565b95945050505050565b60608282604051602001612aa29291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b1257857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b0594939291906153f4565b60405180910390a2610716565b6000612b1d87613832565b905060005b8151811015612bf6576000828281518110612b3f57612b3f615378565b60200260200101519050612b6b6001826affffffffffffffffffffff19166138b690919063ffffffff16565b15612bed576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612bba908c908c908c908c908c908c90600401615433565b600060405180830381600087803b158015612bd457600080fd5b505af1158015612be8573d6000803e3d6000fd5b505050505b50600101612b22565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c2d94939291906153f4565b60405180910390a26000612c418888613752565b90506000602087019050612c598260008951846138d4565b6000612c6485612822565b1115612ce8576000612c768a8a613993565b878155905060208601915060008060005b612c9088612822565b8160ff161015612ce357612ca58d8d836139e9565b9250612cc08a8260ff166028026038011c64ffffffffff1690565b9150612ccf83600084886138d4565b612cd98286615257565b9450600101612c87565b505050505b60005b8351811015612982576000848281518110612d0857612d08615378565b60200260200101519050612d346002826affffffffffffffffffffff19166138b690919063ffffffff16565b15612db6576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612d83908e908e908e908e908e908e90600401615433565b600060405180830381600087803b158015612d9d57600080fd5b505af1158015612db1573d6000803e3d6000fd5b505050505b50600101612ceb565b60006103268251603881901b1790565b606081604051602001612de2919061548c565b6040516020818303038152906040529050919050565b6000612e0383613a69565b801561286057506128608383613aaa565b611bdd60f21b836001600160f01b03191603612e6757827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e5a91906154a8565b60405180910390a2505050565b6000612e7284613832565b905060005b8151811015612f45576000828281518110612e9457612e94615378565b60200260200101519050612ec06040826affffffffffffffffffffff19166138b690919063ffffffff16565b15612f3c576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f09908990899089906004016154bb565b600060405180830381600087803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050505b50600101612e77565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612f7691906154a8565b60405180910390a26000612f8a8585613752565b9050612fe3816000612f9b866136c7565b67ffffffffffffffff811115612fb357612fb3614d75565b6040519080825280601f01601f191660200182016040528015612fdd576020820181803683370190505b50613b62565b6000612fee84612822565b111561300f5760006130008686613993565b905061300d816020613b78565b505b60005b825181101561071657600083828151811061302f5761302f615378565b6020026020010151905061305b6080826affffffffffffffffffffff19166138b690919063ffffffff16565b156130d7576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130a4908a908a908a906004016154bb565b600060405180830381600087803b1580156130be57600080fd5b505af11580156130d2573d6000803e3d6000fd5b505050505b50600101613012565b610ae585856130ef84876137a8565b85613bb5565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612aa2565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061315b5761315b615378565b6020026020010181815250506104487f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b826000856040516020016131b691906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613e1d565b60006060836001600160a01b031660006131e5858989613e58565b6040516131f2919061548c565b60006040518083038185875af1925050503d806000811461322f576040519150601f19603f3d011682016040523d82523d6000602084013e613234565b606091505b509097909650945050505050565b805160208201fd5b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061328457613284615378565b602002602001018181525050600061329e85836000613e6f565b9050612a716132b08260008451613ea9565b613f37565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132eb576132eb615378565b602002602001018181525050610ae78482600061330786613f48565b613f58565b6000613316613688565b9050306001600160a01b03821603613332576104488383613f93565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061337990869086906004016154e4565b600060405180830381600087803b15801561339357600080fd5b505af11580156114ea573d6000803e3d6000fd5b6040805161737960f01b60208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526133ff906151df565b909114919050565b60006060600061341686613fa6565b905060005b81518110156134e957600082828151811061343857613438615378565b602002602001015190506134646001826affffffffffffffffffffff19166138b690919063ffffffff16565b156134e0576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906134ad908c908c908c906004016154fd565b600060405180830381600087803b1580156134c757600080fd5b505af11580156134db573d6000803e3d6000fd5b505050505b5060010161341b565b506134f687858888614018565b909350915060005b81518110156135cc57600082828151811061351b5761351b615378565b602002602001015190506135476002826affffffffffffffffffffff19166138b690919063ffffffff16565b156135c3576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990613590908c908c908c906004016154fd565b600060405180830381600087803b1580156135aa57600080fd5b505af11580156135be573d6000803e3d6000fd5b505050505b506001016134fe565b505094509492505050565b60006135e1613688565b9050306001600160a01b03821603613604576135ff85858585613e1d565b610ae5565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061364f908890889088908890600401615525565b600060405180830381600087803b15801561366957600080fd5b505af115801561367d573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806136c2573391505090565b919050565b600060086136d76002602061538e565b6136e191906153a1565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b17612860565b60608282604051602001612aa2929190615559565b60008282604051602001613767929190615588565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156137d9576137cf60ff601b83900360080287901c1683615257565b91506001016137ad565b509392505050565b60006020821061380757602082048401935060208281613803576138036155c4565b0691505b508254600882021b6020829003808411156137d9576001850154600882021c82179150509392505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061386c5761386c615378565b602090810291909101015260006138a47f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613e6f565b90506113706132b08260008451613ea9565b60008160ff16826138c78560581c90565b1660ff1614905092915050565b821561394e57602083106138fe576020830484019350602083816138fa576138fa6155c4565b0692505b821561394e5760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161393f575050610ae7565b50600194909401939182900391015b5b602082106139705780518455600190930192601f199091019060200161394f565b8115610ae7576000600019600884021c8554835182191691161785555050505050565b600082826040516020016139a8929190615588565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016139fe929190615588565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613a95827f01ffc9a700000000000000000000000000000000000000000000000000000000613aaa565b80156103265750612194826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613b4b575060208210155b8015613b575750600081115b979650505050505050565b61044883838351613b738560200190565b6138d4565b60006020613b8783601f615257565b613b9191906155da565b613b9b9084615257565b90505b808310156104485760008355600183019250613b9e565b611bdd60f21b846001600160f01b03191603613c0c57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051613bff939291906155fc565b60405180910390a2610ae7565b6000613c188585613752565b90506000613c2586613832565b905060005b8151811015613cfa576000828281518110613c4757613c47615378565b60200260200101519050613c736004826affffffffffffffffffffff19166138b690919063ffffffff16565b15613cf1576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613cbe908b908b908b908b9060040161562f565b600060405180830381600087803b158015613cd857600080fd5b505af1158015613cec573d6000803e3d6000fd5b505050505b50600101613c2a565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051613d2f939291906155fc565b60405180910390a2613d4a828565ffffffffffff1685613b62565b60005b81518110156114ea576000828281518110613d6a57613d6a615378565b60200260200101519050613d966008826affffffffffffffffffffff19166138b690919063ffffffff16565b15613e14576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613de1908b908b908b908b9060040161562f565b600060405180830381600087803b158015613dfb57600080fd5b505af1158015613e0f573d6000803e3d6000fd5b505050505b50600101613d4d565b6000613e2985856140ea565b90506000613e46828560ff166028026038011c64ffffffffff1690565b905061071686868684600088886140fd565b606083838360405160200161370893929190615668565b6060611370613e7f8585856139e9565b6000613ea485613e8f89896140ea565b9060ff166028026038011c64ffffffffff1690565b6144a7565b600081831180613eb95750835182115b15613ef6578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103bc939291906156a7565b60208401613f048482615257565b90506000613f12858561538e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061286083601560006144ca565b6060816128608160156000614545565b6000613f6485856140ea565b90506000613f81828560ff166028026038011c64ffffffffff1690565b905061071686868660008588886140fd565b61034f8282613fa185614599565b612e14565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613fe057613fe0615378565b602090810291909101015260006138a47f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383613e6f565b600060606000806140288661461e565b90925090506001600160a01b0382166140455785610e1b87610cf0565b806140545761405486896146d6565b8615614098576dffffffffffffffffffffffffffff60801b8616616e7360f01b176000614080826146ed565b9050614095826140908b84615257565b614766565b50505b60006140a48760101b90565b71ffffffffffffffffffffffffffffffffffff1916146140cf576140ca888884886131ca565b6140db565b6140db888884886147e5565b90999098509650505050505050565b60006128606140f98484613993565b5490565b613a3160f11b876001600160f01b0319161461412d57613a3160f11b8788604051602001610e9c91815260200190565b6000614148828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683614161919061538e565b61416b9190615257565b905080821415801561418d57508161418386886156cc565b64ffffffffff1614155b156141dd576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103bc565b818664ffffffffff16111561422e576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103bc565b600061423b848984614846565b905060006142488b613832565b905060005b815181101561431357600082828151811061426a5761426a615378565b602002602001015190506142966010826affffffffffffffffffffff19166138b690919063ffffffff16565b1561430a57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016142d797969594939291906156f1565b600060405180830381600087803b1580156142f157600080fd5b505af1158015614305573d6000803e3d6000fd5b505050505b5060010161424d565b5064ffffffffff881660005b8a60ff168160ff16101561435257614346878260ff166028026038011c64ffffffffff1690565b9091019060010161431f565b508b7ffe158a7adba34e256807c8a149028d3162918713c3838afc643ce9f96716ebfd8c8c848c888d60405161438d9695949392919061574f565b60405180910390a2508284146143ae5760006143a98c8c613993565b839055505b60006143bb8c8c8c6139e9565b90506143cf818a64ffffffffff1689613b62565b5060005b81518110156144995760008282815181106143f0576143f0615378565b6020026020010151905061441c6020826affffffffffffffffffffff19166138b690919063ffffffff16565b1561449057606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b815260040161445d97969594939291906156f1565b600060405180830381600087803b15801561447757600080fd5b505af115801561448b573d6000803e3d6000fd5b505050505b506001016143d3565b505050505050505050505050565b60405160208101601f19603f84840101166040528282526137d985858584614914565b606060006144d88560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816144fe576144fe6155c4565b04905060405193506020840160208202810160405281855260005b82811015614539578451871c825293870193602090910190600101614519565b50505050509392505050565b8251606090600061455685836153a1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614539578051871b83529187019160019190910190602001614578565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016145e857507e60030220202000000000000000000000000000000000000000000000000000919050565b6103266146157f746273746f72650000000000000000005461626c657300000000000000000000846149e0565b602060006137e1565b6040805160018082528183019092526000918291829160208083019080368337019050509050838160008151811061465857614658615378565b6020908102919091010152600080806146b17f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006149fc565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b6146e08282614b04565b61034f57610c7982610cf0565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061472657614726615378565b602090810291909101015260006113707f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612a44565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061479c5761479c615378565b6020026020010181815250506104487f7462776f726c6400000000000000000042616c616e636573000000000000000060001b82600085604051602001611a2491815260200190565b60006060836001600160a01b03166147fe848888613e58565b60405161480b919061548c565b600060405180830381855af49150503d806000811461322f576040519150601f19603f3d011682016040523d82523d6000602084013e613234565b600064ffffffffff82111561488a576040517f7149a3c1000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106148bc57808503820191506148c4565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561499b576020831061493e5760208304840193506020838161493a5761493a6155c4565b0692505b821561499b5760208390036000818410156149615750600019600884021c61496b565b50600019600882021c5b8554600886021b81845116821982161784525081841161498c575050610ae7565b50600194909401939182900391015b5b602082106149bd5783548152600190930192601f199091019060200161499c565b8115610ae7576000600019600884021c8251865482191691161782525050505050565b6040805160208101849052908101829052600090606001613767565b6060600060606000614a0d856136c7565b9050614a1a878783614b3a565b93506000614a2786612822565b90508015614af957614a3988886140ea565b935066ffffffffffffff841667ffffffffffffffff811115614a5d57614a5d614d75565b6040519080825280601f01601f191660200182016040528015614a87576020820181803683370190505b5092506020830160005b828160ff161015614af6576000614aa98b8b846139e9565b90506000614ac6888460ff166028026038011c64ffffffffff1690565b9050614ad58260008387614914565b614adf8185615257565b935050508080614aee906157ab565b915050614a91565b50505b505093509350939050565b6000614b2a616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614b73565b8061286057506128608383614b73565b606081600003614b595750604080516020810190915260008152612860565b6000614b658585613752565b9050612a71816000856144a7565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614bac57614bac615378565b602002602001018181525050826001600160a01b031660001b81600181518110614bd857614bd8615378565b60209081029190910101526000614c187f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612a44565b9050612a718160f81c90565b600060208284031215614c3657600080fd5b81356001600160e01b03198116811461286057600080fd5b6001600160a01b038116811461099557600080fd5b60008060408385031215614c7657600080fd5b823591506020830135614c8881614c4e565b809150509250929050565b60008083601f840112614ca557600080fd5b50813567ffffffffffffffff811115614cbd57600080fd5b6020830191508360208260051b8501011115614cd857600080fd5b9250929050565b60008060008060008060008060c0898b031215614cfb57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614d2f57600080fd5b614d3b8c838d01614c93565b909650945060a08b0135915080821115614d5457600080fd5b50614d618b828c01614c93565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614db457614db4614d75565b604052919050565b600082601f830112614dcd57600080fd5b813567ffffffffffffffff811115614de757614de7614d75565b614dfa6020601f19601f84011601614d8b565b818152846020838601011115614e0f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614e4157600080fd5b8335614e4c81614c4e565b925060208401359150604084013567ffffffffffffffff811115614e6f57600080fd5b614e7b86828701614dbc565b9150509250925092565b60008060408385031215614e9857600080fd5b82359150602083013567ffffffffffffffff811115614eb657600080fd5b614ec285828601614dbc565b9150509250929050565b600080600060608486031215614ee157600080fd5b833592506020840135614ef381614c4e565b915060408401358015158114614f0857600080fd5b809150509250925092565b803560ff811681146136c257600080fd5b600080600060608486031215614f3957600080fd5b833592506020840135614f4b81614c4e565b9150614f5960408501614f13565b90509250925092565b600080600060608486031215614f7757600080fd5b83359250602084013567ffffffffffffffff80821115614f9657600080fd5b614fa287838801614dbc565b93506040860135915080821115614fb857600080fd5b50614e7b86828701614dbc565b60008060408385031215614fd857600080fd5b8235614fe381614c4e565b9150602083013567ffffffffffffffff811115614eb657600080fd5b60006020828403121561501157600080fd5b5035919050565b60008060006060848603121561502d57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614e6f57600080fd5b60006020828403121561506457600080fd5b813561286081614c4e565b60005b8381101561508a578181015183820152602001615072565b50506000910152565b600081518084526150ab81602086016020860161506f565b601f01601f19169290920160200192915050565b8281526040602082015260006113706040830184615093565b600067ffffffffffffffff808411156150f3576150f3614d75565b8360051b602061510560208301614d8b565b8681529185019160208101903684111561511e57600080fd5b865b84811015615152578035868111156151385760008081fd5b61514436828b01614dbc565b845250918301918301615120565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612a716060830184615093565b6000835161519981846020880161506f565b7f5f5f00000000000000000000000000000000000000000000000000000000000090830190815283516151d381600284016020880161506f565b01600201949350505050565b805160208083015191908110156128c15760001960209190910360031b1b16919050565b6020815260006128606020830184615093565b6040815260006152296040830185615093565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561032657610326615241565b6001600160f01b03198416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516152b381600386016020890161506f565b8084019050816003820152845191506152d382600483016020880161506f565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561536b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452615359858351615093565b9450928501929085019060010161531f565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b8181038181111561032657610326615241565b808202811582820484141761032657610326615241565b60008151808452602080850194506020840160005b838110156153e9578151875295820195908201906001016153cd565b509495945050505050565b60808152600061540760808301876153b8565b82810360208401526154198187615093565b90508460408401528281036060840152613b578185615093565b86815260c06020820152600061544c60c08301886153b8565b828103604084015261545e8188615093565b905085606084015282810360808401526154788186615093565b9150508260a0830152979650505050505050565b6000825161549e81846020870161506f565b9190910192915050565b60208152600061286060208301846153b8565b8381526060602082015260006154d460608301856153b8565b9050826040830152949350505050565b82815260406020820152600061137060408301846153b8565b6001600160a01b0384168152826020820152606060408201526000612a716060830184615093565b84815260806020820152600061553e60808301866153b8565b60ff851660408401528281036060840152613b578185615093565b6000835161556b81846020880161506f565b83519083019061557f81836020880161506f565b01949350505050565b8281526000602080830184516020860160005b828110156155b75781518452928401929084019060010161559b565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826155f757634e487b7160e01b600052601260045260246000fd5b500490565b60608152600061560f60608301866153b8565b65ffffffffffff851660208401528281036040840152611bd68185615093565b84815260806020820152600061564860808301866153b8565b65ffffffffffff851660408401528281036060840152613b578185615093565b6000845161567a81846020890161506f565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006156ba6060830186615093565b60208301949094525060400152919050565b64ffffffffff8181168382160190808211156156ea576156ea615241565b5092915050565b87815260e06020820152600061570a60e08301896153b8565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526157418185615093565b9a9950505050505050505050565b60c08152600061576260c08301896153b8565b60ff8816602084015265ffffffffffff8716604084015264ffffffffff8616606084015284608084015282810360a084015261579e8185615093565b9998505050505050505050565b600060ff821660ff81036157c1576157c1615241565b6001019291505056fea164736f6c6343000818000a";
        public RegistrationSystemDeploymentBase() : base(BYTECODE) { }
        public RegistrationSystemDeploymentBase(string byteCode) : base(byteCode) { }

    }

    public partial class MsgSenderFunction : MsgSenderFunctionBase { }

    [Function("_msgSender", "address")]
    public class MsgSenderFunctionBase : FunctionMessage
    {

    }

    public partial class MsgValueFunction : MsgValueFunctionBase { }

    [Function("_msgValue", "uint256")]
    public class MsgValueFunctionBase : FunctionMessage
    {

    }

    public partial class WorldFunction : WorldFunctionBase { }

    [Function("_world", "address")]
    public class WorldFunctionBase : FunctionMessage
    {

    }

    public partial class InstallModuleFunction : InstallModuleFunctionBase { }

    [Function("installModule")]
    public class InstallModuleFunctionBase : FunctionMessage
    {
        [Parameter("address", "module", 1)]
        public virtual string Module { get; set; }
        [Parameter("bytes", "encodedArgs", 2)]
        public virtual byte[] EncodedArgs { get; set; }
    }

    public partial class RegisterDelegationFunction : RegisterDelegationFunctionBase { }

    [Function("registerDelegation")]
    public class RegisterDelegationFunctionBase : FunctionMessage
    {
        [Parameter("address", "delegatee", 1)]
        public virtual string Delegatee { get; set; }
        [Parameter("bytes32", "delegationControlId", 2)]
        public virtual byte[] DelegationControlId { get; set; }
        [Parameter("bytes", "initCallData", 3)]
        public virtual byte[] InitCallData { get; set; }
    }

    public partial class RegisterFunctionSelectorFunction : RegisterFunctionSelectorFunctionBase { }

    [Function("registerFunctionSelector", "bytes4")]
    public class RegisterFunctionSelectorFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "systemId", 1)]
        public virtual byte[] SystemId { get; set; }
        [Parameter("string", "systemFunctionSignature", 2)]
        public virtual string SystemFunctionSignature { get; set; }
    }

    public partial class RegisterNamespaceFunction : RegisterNamespaceFunctionBase { }

    [Function("registerNamespace")]
    public class RegisterNamespaceFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "namespaceId", 1)]
        public virtual byte[] NamespaceId { get; set; }
    }

    public partial class RegisterNamespaceDelegationFunction : RegisterNamespaceDelegationFunctionBase { }

    [Function("registerNamespaceDelegation")]
    public class RegisterNamespaceDelegationFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "namespaceId", 1)]
        public virtual byte[] NamespaceId { get; set; }
        [Parameter("bytes32", "delegationControlId", 2)]
        public virtual byte[] DelegationControlId { get; set; }
        [Parameter("bytes", "initCallData", 3)]
        public virtual byte[] InitCallData { get; set; }
    }

    public partial class RegisterRootFunctionSelectorFunction : RegisterRootFunctionSelectorFunctionBase { }

    [Function("registerRootFunctionSelector", "bytes4")]
    public class RegisterRootFunctionSelectorFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "systemId", 1)]
        public virtual byte[] SystemId { get; set; }
        [Parameter("string", "worldFunctionSignature", 2)]
        public virtual string WorldFunctionSignature { get; set; }
        [Parameter("string", "systemFunctionSignature", 3)]
        public virtual string SystemFunctionSignature { get; set; }
    }

    public partial class RegisterStoreHookFunction : RegisterStoreHookFunctionBase { }

    [Function("registerStoreHook")]
    public class RegisterStoreHookFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "tableId", 1)]
        public virtual byte[] TableId { get; set; }
        [Parameter("address", "hookAddress", 2)]
        public virtual string HookAddress { get; set; }
        [Parameter("uint8", "enabledHooksBitmap", 3)]
        public virtual byte EnabledHooksBitmap { get; set; }
    }

    public partial class RegisterSystemFunction : RegisterSystemFunctionBase { }

    [Function("registerSystem")]
    public class RegisterSystemFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "systemId", 1)]
        public virtual byte[] SystemId { get; set; }
        [Parameter("address", "system", 2)]
        public virtual string System { get; set; }
        [Parameter("bool", "publicAccess", 3)]
        public virtual bool PublicAccess { get; set; }
    }

    public partial class RegisterSystemHookFunction : RegisterSystemHookFunctionBase { }

    [Function("registerSystemHook")]
    public class RegisterSystemHookFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "systemId", 1)]
        public virtual byte[] SystemId { get; set; }
        [Parameter("address", "hookAddress", 2)]
        public virtual string HookAddress { get; set; }
        [Parameter("uint8", "enabledHooksBitmap", 3)]
        public virtual byte EnabledHooksBitmap { get; set; }
    }

    public partial class RegisterTableFunction : RegisterTableFunctionBase { }

    [Function("registerTable")]
    public class RegisterTableFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "tableId", 1)]
        public virtual byte[] TableId { get; set; }
        [Parameter("bytes32", "fieldLayout", 2)]
        public virtual byte[] FieldLayout { get; set; }
        [Parameter("bytes32", "keySchema", 3)]
        public virtual byte[] KeySchema { get; set; }
        [Parameter("bytes32", "valueSchema", 4)]
        public virtual byte[] ValueSchema { get; set; }
        [Parameter("string[]", "keyNames", 5)]
        public virtual List<string> KeyNames { get; set; }
        [Parameter("string[]", "fieldNames", 6)]
        public virtual List<string> FieldNames { get; set; }
    }

    public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { }

    [Function("supportsInterface", "bool")]
    public class SupportsInterfaceFunctionBase : FunctionMessage
    {
        [Parameter("bytes4", "interfaceId", 1)]
        public virtual byte[] InterfaceId { get; set; }
    }

    public partial class UnregisterDelegationFunction : UnregisterDelegationFunctionBase { }

    [Function("unregisterDelegation")]
    public class UnregisterDelegationFunctionBase : FunctionMessage
    {
        [Parameter("address", "delegatee", 1)]
        public virtual string Delegatee { get; set; }
    }

    public partial class UnregisterNamespaceDelegationFunction : UnregisterNamespaceDelegationFunctionBase { }

    [Function("unregisterNamespaceDelegation")]
    public class UnregisterNamespaceDelegationFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "namespaceId", 1)]
        public virtual byte[] NamespaceId { get; set; }
    }

    public partial class UnregisterStoreHookFunction : UnregisterStoreHookFunctionBase { }

    [Function("unregisterStoreHook")]
    public class UnregisterStoreHookFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "tableId", 1)]
        public virtual byte[] TableId { get; set; }
        [Parameter("address", "hookAddress", 2)]
        public virtual string HookAddress { get; set; }
    }

    public partial class UnregisterSystemHookFunction : UnregisterSystemHookFunctionBase { }

    [Function("unregisterSystemHook")]
    public class UnregisterSystemHookFunctionBase : FunctionMessage
    {
        [Parameter("bytes32", "systemId", 1)]
        public virtual byte[] SystemId { get; set; }
        [Parameter("address", "hookAddress", 2)]
        public virtual string HookAddress { get; set; }
    }

    public partial class StoreDeleterecordEventDTO : StoreDeleterecordEventDTOBase { }

    [Event("Store_DeleteRecord")]
    public class StoreDeleterecordEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "tableId", 1, true)]
        public virtual byte[] TableId { get; set; }
        [Parameter("bytes32[]", "keyTuple", 2, false)]
        public virtual List<byte[]> KeyTuple { get; set; }
    }

    public partial class StoreSetrecordEventDTO : StoreSetrecordEventDTOBase { }

    [Event("Store_SetRecord")]
    public class StoreSetrecordEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "tableId", 1, true)]
        public virtual byte[] TableId { get; set; }
        [Parameter("bytes32[]", "keyTuple", 2, false)]
        public virtual List<byte[]> KeyTuple { get; set; }
        [Parameter("bytes", "staticData", 3, false)]
        public virtual byte[] StaticData { get; set; }
        [Parameter("bytes32", "encodedLengths", 4, false)]
        public virtual byte[] EncodedLengths { get; set; }
        [Parameter("bytes", "dynamicData", 5, false)]
        public virtual byte[] DynamicData { get; set; }
    }

    public partial class StoreSplicedynamicdataEventDTO : StoreSplicedynamicdataEventDTOBase { }

    [Event("Store_SpliceDynamicData")]
    public class StoreSplicedynamicdataEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "tableId", 1, true)]
        public virtual byte[] TableId { get; set; }
        [Parameter("bytes32[]", "keyTuple", 2, false)]
        public virtual List<byte[]> KeyTuple { get; set; }
        [Parameter("uint8", "dynamicFieldIndex", 3, false)]
        public virtual byte DynamicFieldIndex { get; set; }
        [Parameter("uint48", "start", 4, false)]
        public virtual ulong Start { get; set; }
        [Parameter("uint40", "deleteCount", 5, false)]
        public virtual ulong DeleteCount { get; set; }
        [Parameter("bytes32", "encodedLengths", 6, false)]
        public virtual byte[] EncodedLengths { get; set; }
        [Parameter("bytes", "data", 7, false)]
        public virtual byte[] Data { get; set; }
    }

    public partial class StoreSplicestaticdataEventDTO : StoreSplicestaticdataEventDTOBase { }

    [Event("Store_SpliceStaticData")]
    public class StoreSplicestaticdataEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "tableId", 1, true)]
        public virtual byte[] TableId { get; set; }
        [Parameter("bytes32[]", "keyTuple", 2, false)]
        public virtual List<byte[]> KeyTuple { get; set; }
        [Parameter("uint48", "start", 3, false)]
        public virtual ulong Start { get; set; }
        [Parameter("bytes", "data", 4, false)]
        public virtual byte[] Data { get; set; }
    }

    public partial class EncodedlengthsInvalidlengthError : EncodedlengthsInvalidlengthErrorBase { }

    [Error("EncodedLengths_InvalidLength")]
    public class EncodedlengthsInvalidlengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "length", 1)]
        public virtual BigInteger Length { get; set; }
    }

    public partial class FieldlayoutEmptyError : FieldlayoutEmptyErrorBase { }
    [Error("FieldLayout_Empty")]
    public class FieldlayoutEmptyErrorBase : IErrorDTO
    {
    }

    public partial class FieldlayoutInvalidstaticdatalengthError : FieldlayoutInvalidstaticdatalengthErrorBase { }

    [Error("FieldLayout_InvalidStaticDataLength")]
    public class FieldlayoutInvalidstaticdatalengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "staticDataLength", 1)]
        public virtual BigInteger StaticDataLength { get; set; }
        [Parameter("uint256", "computedStaticDataLength", 2)]
        public virtual BigInteger ComputedStaticDataLength { get; set; }
    }

    public partial class FieldlayoutStaticlengthdoesnotfitinawordError : FieldlayoutStaticlengthdoesnotfitinawordErrorBase { }

    [Error("FieldLayout_StaticLengthDoesNotFitInAWord")]
    public class FieldlayoutStaticlengthdoesnotfitinawordErrorBase : IErrorDTO
    {
        [Parameter("uint256", "index", 1)]
        public virtual BigInteger Index { get; set; }
    }

    public partial class FieldlayoutStaticlengthisnotzeroError : FieldlayoutStaticlengthisnotzeroErrorBase { }

    [Error("FieldLayout_StaticLengthIsNotZero")]
    public class FieldlayoutStaticlengthisnotzeroErrorBase : IErrorDTO
    {
        [Parameter("uint256", "index", 1)]
        public virtual BigInteger Index { get; set; }
    }

    public partial class FieldlayoutStaticlengthiszeroError : FieldlayoutStaticlengthiszeroErrorBase { }

    [Error("FieldLayout_StaticLengthIsZero")]
    public class FieldlayoutStaticlengthiszeroErrorBase : IErrorDTO
    {
        [Parameter("uint256", "index", 1)]
        public virtual BigInteger Index { get; set; }
    }

    public partial class FieldlayoutToomanydynamicfieldsError : FieldlayoutToomanydynamicfieldsErrorBase { }

    [Error("FieldLayout_TooManyDynamicFields")]
    public class FieldlayoutToomanydynamicfieldsErrorBase : IErrorDTO
    {
        [Parameter("uint256", "numFields", 1)]
        public virtual BigInteger NumFields { get; set; }
        [Parameter("uint256", "maxFields", 2)]
        public virtual BigInteger MaxFields { get; set; }
    }

    public partial class FieldlayoutToomanyfieldsError : FieldlayoutToomanyfieldsErrorBase { }

    [Error("FieldLayout_TooManyFields")]
    public class FieldlayoutToomanyfieldsErrorBase : IErrorDTO
    {
        [Parameter("uint256", "numFields", 1)]
        public virtual BigInteger NumFields { get; set; }
        [Parameter("uint256", "maxFields", 2)]
        public virtual BigInteger MaxFields { get; set; }
    }

    public partial class SchemaInvalidlengthError : SchemaInvalidlengthErrorBase { }

    [Error("Schema_InvalidLength")]
    public class SchemaInvalidlengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "length", 1)]
        public virtual BigInteger Length { get; set; }
    }

    public partial class SchemaStatictypeafterdynamictypeError : SchemaStatictypeafterdynamictypeErrorBase { }
    [Error("Schema_StaticTypeAfterDynamicType")]
    public class SchemaStatictypeafterdynamictypeErrorBase : IErrorDTO
    {
    }

    public partial class SliceOutofboundsError : SliceOutofboundsErrorBase { }

    [Error("Slice_OutOfBounds")]
    public class SliceOutofboundsErrorBase : IErrorDTO
    {
        [Parameter("bytes", "data", 1)]
        public virtual byte[] Data { get; set; }
        [Parameter("uint256", "start", 2)]
        public virtual BigInteger Start { get; set; }
        [Parameter("uint256", "end", 3)]
        public virtual BigInteger End { get; set; }
    }

    public partial class StoreIndexoutofboundsError : StoreIndexoutofboundsErrorBase { }

    [Error("Store_IndexOutOfBounds")]
    public class StoreIndexoutofboundsErrorBase : IErrorDTO
    {
        [Parameter("uint256", "length", 1)]
        public virtual BigInteger Length { get; set; }
        [Parameter("uint256", "accessedIndex", 2)]
        public virtual BigInteger AccessedIndex { get; set; }
    }

    public partial class StoreInvalidfieldnameslengthError : StoreInvalidfieldnameslengthErrorBase { }

    [Error("Store_InvalidFieldNamesLength")]
    public class StoreInvalidfieldnameslengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "expected", 1)]
        public virtual BigInteger Expected { get; set; }
        [Parameter("uint256", "received", 2)]
        public virtual BigInteger Received { get; set; }
    }

    public partial class StoreInvalidkeynameslengthError : StoreInvalidkeynameslengthErrorBase { }

    [Error("Store_InvalidKeyNamesLength")]
    public class StoreInvalidkeynameslengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "expected", 1)]
        public virtual BigInteger Expected { get; set; }
        [Parameter("uint256", "received", 2)]
        public virtual BigInteger Received { get; set; }
    }

    public partial class StoreInvalidresourcetypeError : StoreInvalidresourcetypeErrorBase { }

    [Error("Store_InvalidResourceType")]
    public class StoreInvalidresourcetypeErrorBase : IErrorDTO
    {
        [Parameter("bytes2", "expected", 1)]
        public virtual byte[] Expected { get; set; }
        [Parameter("bytes32", "resourceId", 2)]
        public virtual byte[] ResourceId { get; set; }
        [Parameter("string", "resourceIdString", 3)]
        public virtual string ResourceIdString { get; set; }
    }

    public partial class StoreInvalidspliceError : StoreInvalidspliceErrorBase { }

    [Error("Store_InvalidSplice")]
    public class StoreInvalidspliceErrorBase : IErrorDTO
    {
        [Parameter("uint40", "startWithinField", 1)]
        public virtual ulong StartWithinField { get; set; }
        [Parameter("uint40", "deleteCount", 2)]
        public virtual ulong DeleteCount { get; set; }
        [Parameter("uint40", "fieldLength", 3)]
        public virtual ulong FieldLength { get; set; }
    }

    public partial class StoreInvalidstaticdatalengthError : StoreInvalidstaticdatalengthErrorBase { }

    [Error("Store_InvalidStaticDataLength")]
    public class StoreInvalidstaticdatalengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "expected", 1)]
        public virtual BigInteger Expected { get; set; }
        [Parameter("uint256", "received", 2)]
        public virtual BigInteger Received { get; set; }
    }

    public partial class StoreInvalidvalueschemadynamiclengthError : StoreInvalidvalueschemadynamiclengthErrorBase { }

    [Error("Store_InvalidValueSchemaDynamicLength")]
    public class StoreInvalidvalueschemadynamiclengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "expected", 1)]
        public virtual BigInteger Expected { get; set; }
        [Parameter("uint256", "received", 2)]
        public virtual BigInteger Received { get; set; }
    }

    public partial class StoreInvalidvalueschemalengthError : StoreInvalidvalueschemalengthErrorBase { }

    [Error("Store_InvalidValueSchemaLength")]
    public class StoreInvalidvalueschemalengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "expected", 1)]
        public virtual BigInteger Expected { get; set; }
        [Parameter("uint256", "received", 2)]
        public virtual BigInteger Received { get; set; }
    }

    public partial class StoreInvalidvalueschemastaticlengthError : StoreInvalidvalueschemastaticlengthErrorBase { }

    [Error("Store_InvalidValueSchemaStaticLength")]
    public class StoreInvalidvalueschemastaticlengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "expected", 1)]
        public virtual BigInteger Expected { get; set; }
        [Parameter("uint256", "received", 2)]
        public virtual BigInteger Received { get; set; }
    }

    public partial class StoreTablealreadyexistsError : StoreTablealreadyexistsErrorBase { }

    [Error("Store_TableAlreadyExists")]
    public class StoreTablealreadyexistsErrorBase : IErrorDTO
    {
        [Parameter("bytes32", "tableId", 1)]
        public virtual byte[] TableId { get; set; }
        [Parameter("string", "tableIdString", 2)]
        public virtual string TableIdString { get; set; }
    }

    public partial class StoreTablenotfoundError : StoreTablenotfoundErrorBase { }

    [Error("Store_TableNotFound")]
    public class StoreTablenotfoundErrorBase : IErrorDTO
    {
        [Parameter("bytes32", "tableId", 1)]
        public virtual byte[] TableId { get; set; }
        [Parameter("string", "tableIdString", 2)]
        public virtual string TableIdString { get; set; }
    }

    public partial class UnauthorizedCallContextError : UnauthorizedCallContextErrorBase { }
    [Error("UnauthorizedCallContext")]
    public class UnauthorizedCallContextErrorBase : IErrorDTO
    {
    }

    public partial class WorldAccessdeniedError : WorldAccessdeniedErrorBase { }

    [Error("World_AccessDenied")]
    public class WorldAccessdeniedErrorBase : IErrorDTO
    {
        [Parameter("string", "resource", 1)]
        public virtual string Resource { get; set; }
        [Parameter("address", "caller", 2)]
        public virtual string Caller { get; set; }
    }

    public partial class WorldAlreadyinitializedError : WorldAlreadyinitializedErrorBase { }
    [Error("World_AlreadyInitialized")]
    public class WorldAlreadyinitializedErrorBase : IErrorDTO
    {
    }

    public partial class WorldCallbacknotallowedError : WorldCallbacknotallowedErrorBase { }

    [Error("World_CallbackNotAllowed")]
    public class WorldCallbacknotallowedErrorBase : IErrorDTO
    {
        [Parameter("bytes4", "functionSelector", 1)]
        public virtual byte[] FunctionSelector { get; set; }
    }

    public partial class WorldDelegationnotfoundError : WorldDelegationnotfoundErrorBase { }

    [Error("World_DelegationNotFound")]
    public class WorldDelegationnotfoundErrorBase : IErrorDTO
    {
        [Parameter("address", "delegator", 1)]
        public virtual string Delegator { get; set; }
        [Parameter("address", "delegatee", 2)]
        public virtual string Delegatee { get; set; }
    }

    public partial class WorldFunctionselectoralreadyexistsError : WorldFunctionselectoralreadyexistsErrorBase { }

    [Error("World_FunctionSelectorAlreadyExists")]
    public class WorldFunctionselectoralreadyexistsErrorBase : IErrorDTO
    {
        [Parameter("bytes4", "functionSelector", 1)]
        public virtual byte[] FunctionSelector { get; set; }
    }

    public partial class WorldFunctionselectornotfoundError : WorldFunctionselectornotfoundErrorBase { }

    [Error("World_FunctionSelectorNotFound")]
    public class WorldFunctionselectornotfoundErrorBase : IErrorDTO
    {
        [Parameter("bytes4", "functionSelector", 1)]
        public virtual byte[] FunctionSelector { get; set; }
    }

    public partial class WorldInsufficientbalanceError : WorldInsufficientbalanceErrorBase { }

    [Error("World_InsufficientBalance")]
    public class WorldInsufficientbalanceErrorBase : IErrorDTO
    {
        [Parameter("uint256", "balance", 1)]
        public virtual BigInteger Balance { get; set; }
        [Parameter("uint256", "amount", 2)]
        public virtual BigInteger Amount { get; set; }
    }

    public partial class WorldInterfacenotsupportedError : WorldInterfacenotsupportedErrorBase { }

    [Error("World_InterfaceNotSupported")]
    public class WorldInterfacenotsupportedErrorBase : IErrorDTO
    {
        [Parameter("address", "contractAddress", 1)]
        public virtual string ContractAddress { get; set; }
        [Parameter("bytes4", "interfaceId", 2)]
        public virtual byte[] InterfaceId { get; set; }
    }

    public partial class WorldInvalidnamespaceError : WorldInvalidnamespaceErrorBase { }

    [Error("World_InvalidNamespace")]
    public class WorldInvalidnamespaceErrorBase : IErrorDTO
    {
        [Parameter("bytes14", "namespace", 1)]
        public virtual byte[] Namespace { get; set; }
    }

    public partial class WorldInvalidresourceidError : WorldInvalidresourceidErrorBase { }

    [Error("World_InvalidResourceId")]
    public class WorldInvalidresourceidErrorBase : IErrorDTO
    {
        [Parameter("bytes32", "resourceId", 1)]
        public virtual byte[] ResourceId { get; set; }
        [Parameter("string", "resourceIdString", 2)]
        public virtual string ResourceIdString { get; set; }
    }

    public partial class WorldInvalidresourcetypeError : WorldInvalidresourcetypeErrorBase { }

    [Error("World_InvalidResourceType")]
    public class WorldInvalidresourcetypeErrorBase : IErrorDTO
    {
        [Parameter("bytes2", "expected", 1)]
        public virtual byte[] Expected { get; set; }
        [Parameter("bytes32", "resourceId", 2)]
        public virtual byte[] ResourceId { get; set; }
        [Parameter("string", "resourceIdString", 3)]
        public virtual string ResourceIdString { get; set; }
    }

    public partial class WorldResourcealreadyexistsError : WorldResourcealreadyexistsErrorBase { }

    [Error("World_ResourceAlreadyExists")]
    public class WorldResourcealreadyexistsErrorBase : IErrorDTO
    {
        [Parameter("bytes32", "resourceId", 1)]
        public virtual byte[] ResourceId { get; set; }
        [Parameter("string", "resourceIdString", 2)]
        public virtual string ResourceIdString { get; set; }
    }

    public partial class WorldResourcenotfoundError : WorldResourcenotfoundErrorBase { }

    [Error("World_ResourceNotFound")]
    public class WorldResourcenotfoundErrorBase : IErrorDTO
    {
        [Parameter("bytes32", "resourceId", 1)]
        public virtual byte[] ResourceId { get; set; }
        [Parameter("string", "resourceIdString", 2)]
        public virtual string ResourceIdString { get; set; }
    }

    public partial class WorldSystemalreadyexistsError : WorldSystemalreadyexistsErrorBase { }

    [Error("World_SystemAlreadyExists")]
    public class WorldSystemalreadyexistsErrorBase : IErrorDTO
    {
        [Parameter("address", "system", 1)]
        public virtual string System { get; set; }
    }

    public partial class WorldUnlimiteddelegationnotallowedError : WorldUnlimiteddelegationnotallowedErrorBase { }
    [Error("World_UnlimitedDelegationNotAllowed")]
    public class WorldUnlimiteddelegationnotallowedErrorBase : IErrorDTO
    {
    }

    public partial class MsgSenderOutputDTO : MsgSenderOutputDTOBase { }

    [FunctionOutput]
    public class MsgSenderOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("address", "sender", 1)]
        public virtual string Sender { get; set; }
    }

    public partial class MsgValueOutputDTO : MsgValueOutputDTOBase { }

    [FunctionOutput]
    public class MsgValueOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("uint256", "value", 1)]
        public virtual BigInteger Value { get; set; }
    }

    public partial class WorldOutputDTO : WorldOutputDTOBase { }

    [FunctionOutput]
    public class WorldOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }





















    public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { }

    [FunctionOutput]
    public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }








}
